package moodle.Agentes;
import jade.core.Agent;
import jamder.Environment;
import jamder.roles.AgentRole;
import jamder.structural.*;

import java.util.Date;
import java.util.List;
import java.util.Map;

import moodle.Agentes.actions.AjudanteAgente.ExibirDicasCalendario;
import moodle.Agentes.actions.AjudanteAgente.ExibirDicasConfiguracoes;
import moodle.Agentes.actions.AjudanteAgente.ExibirDicasForuns;
import moodle.Agentes.actions.AjudanteAgente.ExibirDicasParticipantes;
import moodle.Agentes.actions.AjudanteAgente.ExibirDicasRelatorioDeNotas;
import jamder.agents.*;
import jamder.behavioural.Action;

public class AjudanteAgente extends ReflexAgent {

   //Constructor 
   public AjudanteAgente (String name, Environment env, AgentRole agRole) {
   super(name, env, agRole);
   
   Action exibirDicasForuns = new ExibirDicasForuns("exibirDicasForuns", null, null);
   //addAction("exibirDicasForuns", exibirDicasForuns);
   //Action exibirDicasCalendario = new ExibirDicasCalendario("exibirDicasCalendario", null, null);
   //addAction("exibirDicasCalendario", exibirDicasCalendario);
   //Action exibirDicasConfiguracoes = new ExibirDicasConfiguracoes("exibirDicasConfiguracoes", null, null);
   //addAction("exibirDicasConfiguracoes", exibirDicasConfiguracoes);
   //Action exibirDicasParticipantes = new ExibirDicasParticipantes("exibirDicasParticipantes", null, null);
   //addAction("exibirDicasParticipantes", exibirDicasParticipantes);
   //Action exibirDicasRelatorioDeNotas = new ExibirDicasRelatorioDeNotas("exibirDicasRelatorioDeNotas", null, null);
   //addAction("exibirDicasRelatorioDeNotas", exibirDicasRelatorioDeNotas);
   
   
   addPerceive("exibirDicasForuns", exibirDicasForuns);
   //addPerceive("exibirDicasParticipantes", exibirDicasParticipantes);
   //addPerceive("exibirDicasCalendario", exibirDicasCalendario);
   //addPerceive("exibirDicasConfiguracoes", exibirDicasConfiguracoes);
   //addPerceive("exibirDicasRelatorioDeNotas", exibirDicasRelatorioDeNotas);
  
   
   
   /*
   
   
  */
   
   //addPerceive("exibirDicasForuns", exibirDicasForuns);
   //addPerceive("exibirDicasParticipantes", exibirDicasParticipantes);
   //addPerceive("exibirDicasCalendario", exibirDicasCalendario);
   //addPerceive("exibirDicasConfiguracoes", exibirDicasConfiguracoes);
   //addPerceive("exibirDicasRelatorioDeNotas", exibirDicasRelatorioDeNotas);
   
   // Action exibirDicasCalendarioNovoEvento = new Action("exibirDicasCalendarioNovoEvento", null, null);
   //Action exibirDicasAtividadeRecenteTodosParticipantes = new Action("exibirDicasAtividadeRecenteTodosParticipantes", null, null);
  // Action exibirDicasAtivarEdicao = new Action("exibirDicasAtivarEdicao", null, null);
 
  // Action exibirDicasDesignarFuncoes = new Action("exibirDicasDesignarFuncoes", null, null);
  
  // Action requisitaCoordenadorAcao = new Action("requisitaCoordenadorAcao", null, null);
   /*
   // Adding preconditions
   requisitaCoordenadorAcao.addPreCondition("mensagemApoio", new Condition());
   requisitaCoordenadorAcao.addPreCondition("mensagensDicasCurso", new Condition());
   requisitaCoordenadorAcao.addPreCondition("localizarDocumentosPessoas", new Condition());
   requisitaCoordenadorAcao.addPreCondition("dificuldadeFuncionalidades", new Condition());
   requisitaCoordenadorAcao.addPreCondition("criacaoDeGrupo", new Condition());

   addAction("exibirDicasForuns", exibirDicasForuns);
   addAction("exibirDicasParticipantes", exibirDicasParticipantes);
   addAction("exibirDicasCalendario", exibirDicasCalendario);
   addAction("exibirDicasCalendarioNovoEvento", exibirDicasCalendarioNovoEvento);
   addAction("exibirDicasAtividadeRecenteTodosParticipantes", exibirDicasAtividadeRecenteTodosParticipantes);
   addAction("exibirDicasAtivarEdicao", exibirDicasAtivarEdicao);
   addAction("exibirDicasConfiguracoes", exibirDicasConfiguracoes);
   addAction("exibirDicasDesignarFuncoes", exibirDicasDesignarFuncoes);
   addAction("exibirDicasRelatorioDeNotas", exibirDicasRelatorioDeNotas);
   
   addPerceive("exibirDicasForuns", exibirDicasForuns);
   addPerceive("exibirDicasParticipantes", exibirDicasParticipantes);
   addPerceive("exibirDicasCalendario", exibirDicasCalendario);
   addPerceive("exibirDicasCalendarioNovoEvento", exibirDicasCalendarioNovoEvento);
   addPerceive("exibirDicasAtividadeRecenteTodosParticipantes", exibirDicasAtividadeRecenteTodosParticipantes);
   addPerceive("exibirDicasAtivarEdicao", exibirDicasAtivarEdicao);
   addPerceive("exibirDicasConfiguracoes", exibirDicasConfiguracoes);
   addPerceive("exibirDicasDesignarFuncoes", exibirDicasDesignarFuncoes);
   addPerceive("exibirDicasRelatorioDeNotas", exibirDicasRelatorioDeNotas);
   */
   }
   
   
   
	public void setup() {
	
		
		/*
		Map<String, Action> actions = this.getAllActions();
		
		if(!actions.isEmpty()){
		
			for(Map.Entry<String, Action> results : actions.entrySet()){
				addBehaviour(results.getValue());
			}
		}
		
		*/
		
		addBehaviour(new Sensor(this, 2000));
	}
	
	public static int difDias(Date data) {
		long dataEntrada = data.getTime();
		long dataAtual = new Date().getTime();
		long dif = dataEntrada-dataAtual;
		int dias = (int) (dif/86400000);
		return dias;
		
	}
	
	@Override
	public void percept(String perception) {
		Action action = getPerceive(perception);
		if(action != null){
			addBehaviour(action);
		}
		
	}
	
}
